package com.itany.corejava.code11_io.file;

import java.io.File;

/**
 * @author 石小俊
 * @date 2023年05月11日 9:22
 * 删除指定目录下所有的空目录,包括子目录下的空目录
 */
public class Test07_练习 {
    public static void main(String[] args) {
        File file = new File("E:/test");
        try {
            remove(file);
        } catch (FileNotExistException e) {
            System.out.println(e.getMessage());
        }
    }

    public static void remove(File file) throws FileNotExistException {
        // 判断传递的文件对象是否存在
        if (!file.exists()) {
            throw new FileNotExistException("该文件不存在");
        }
        // 判断当前文件对象是否表示一个目录
        if (file.isDirectory()) {
            // 如果是目录,判断是否是空目录
            if (file.listFiles().length == 0) {
                // 删除对应空目录
                System.out.println("删除空目录:" + file.getAbsolutePath());
                file.delete();
                // 当删除了空目录之后,当前目录本身可能也成为了空目录
                // 例如:一个目录中只有一个子目录,且子目录是空目录
                // 这时候需要将该目录也删除
                // 将当前目录的父目录进行递归
                remove(file.getParentFile());
            } else {
                // 如果不是空目录,获取该目录中所有的子文件对象进行处理
                File[] files = file.listFiles();
                for (File f : files) {
                    // 递归删除
                    remove(f);
                }
            }
        }
    }
}
